<!DOCTYPE html>
<html lang="ko">
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<title>jscript03객체</title>
	</head>
	<body>
		<h1>jscript03객체</h1>
		<h3>모든 것은 객체다</h3>
		<p>자바스크립트에서 대부분은 객체로 취급가능</p>
		<p>블리언, 숫자, 문자, 날짜, 수학, 정규식, 배열, 심지어 함수까지도 객체로 생각할 수 있음</p>
		<p>객체는 특별한 종류의 자료를 가짐 : 속성, 메서드</p>
		<p>속성 : 객체명.속성명</p>
		<p>메서드 : 객체명.메서드명</p>
		<script type="text/javascript">
			var name = "수지는 최고다!";
			document.write( name.length + "<br />");	// 속성
			name = "suji is the best lady!!";
			document.write( name.toUpperCase() );	// 메서드
		</script>
		<h3>사용자가 만드는 객체</h3>
		<p>바로 개체를 정의해서 객체로 생성하거나</p>
		<p>함수를 이용해서 객체를 만들 수 있음</p>
		<script type="text/javascript">
			var sungjuk = new Object();
				sungjuk.name = "수지";
				sungjuk.kor = 99;
				sungjuk.eng = 98;
				sungjuk.mat = 97;
			
			sungjuk2 = { name: "혜교", kor: 99, eng: 98, mat: 97 };
			
			function sungjuk3 ( name, kor, eng, mat ) {
				this.name = name;
				this.kor = kor;
				this.eng = eng;
				this.mat = mat;
			}
			var sj1 = new sungjuk3( "지현", 87, 65, 45 );
			var sj2 = new sungjuk3( "태희", 12, 56, 89 );
			
			document.write( sungjuk.name + "<br />");				
			document.write( sungjuk2.name + "<br />");				
			document.write( sj1.name );
			document.write( sj2.name );
		</script>
		<h3>객체의 내용 출력</h3>
		<p>객체명.속성명으로 하나씩 출력할 수도 있고</p>
		<p>for 문을 이용해서 간편하게 출력할 수도 있음</p>
		<script type="text/javascript">
			for ( var i in sungjuk ) {
				document.write( i + " / " );	// 속성명
				document.write( sungjuk[i] + "<br />");	// 값				
			}
		</script>
		<h3>객체의 메서드 정의</h3>
		<p>객체 정의시 메서드 이름과 함께 익명함수로  메서드를 정의함</p>
		<script type="text/javascript">
			var sungjuk4 = { kor: 98, eng: 99, mat: 97,
				getTot: function() {
					return this.kor + this.eng + this.mat;
				},
				getAvg: function() {
					return this.getTot() / 3;
				},
				getGrd: function() {
					switch( Math.floor(this.getAvg() / 10 ) ) {
						case 10 : case 9 : return "A"; break;
						case 8 : return "B"; break;
						case 7 : return "C"; break;
						case 6 : return "D"; break;
						default : return "F"; break;
					}
				}
			};
			document.write( sungjuk4.getTot() + "<br />" );
			document.write( sungjuk4.getAvg() + "<br />" );
			document.write( sungjuk4.getGrd() );
		</script>
	</body>
</html>